package com.tedu.day02.oop;

/**
 * this关键字---super关键字---使用完全一致
 * 不需要继承---当前类
 * 使用方式：调用当前类的属性、方法、构造器
 *         this.属性       【给当前类的属性赋值】
 *                            出现方法中
 *                            区别当前类的属性与参数“名称’一致
 *         this.方法
 *         this（）             各个有参构造器
 *
 * 鄙视题：this跟super关键字的区别
 *       this  调用本类的属性、方法、构造器
 *       super 调用父类的属性、方法、构造器，存在继承关系，使用super
 *       this（）与super（）----传递参数
 *       this（）调用本类的其他构造器---构造器的首行
 *       super（）调用父类的其他构造器---子类构造器首行
 * this（）
 */

public class This关键字 {
    int i;  //属性---很少赋值【声明未赋值】---构造器或者方法中赋值
    int j;  //属性---很少赋值【声明未赋值】---构造器或者方法中赋值

    public This关键字(int i, int j) {
        this.i = i;
        this.j = j;
    }

    //构造器：有参  需求：创建一个参数对象，给i跟j赋值【跟super（）一样】
    public This关键字(int i) {
        this(3,4);//调用本类其他有参构造器===传参  i=3
        this.i = i; //常见：this.属性【当前类下的属性】=参数
                    //赋值  this.i=1
    }
    //
    private void testI(){
        System.out.println("我是I");
    }
    private void testJ(){//调取---输出：输出我是I 我是J
        this.testI();
        System.out.println("我是J");
    }

    public static void main(String[] args) {
        System.out.println(new This关键字(1).i);//属性没有输出语句
        new This关键字(1).testJ(); //方法有输出语句
    }
}
